Timm Bäder [Sat, 16 Dec 2017 09:02:03 +0000 (10:02 +0100)]
gl renderer: Use one function per op type to apply data
Timm Bäder [Sat, 16 Dec 2017 01:37:03 +0000 (02:37 +0100)]
gl renderer: Don't leak gl resources
Timm Bäder [Mon, 11 Dec 2017 09:02:13 +0000 (10:02 +0100)]
showrendernode: Show at least the root node bounds
Timm Bäder [Mon, 11 Dec 2017 07:22:54 +0000 (08:22 +0100)]
gl renderer: Fix indentation mishap
Timm Bäder [Mon, 11 Dec 2017 07:22:28 +0000 (08:22 +0100)]
gl renderer: Implement cross fade nodes
Timm Bäder [Sun, 10 Dec 2017 21:27:21 +0000 (22:27 +0100)]
gl renderer: Fix linear gradient shader color calculation
This fixes both the wrong headerbar color and the broken border color in
of the circular button in the widget-factory.
Timm Bäder [Sat, 9 Dec 2017 17:31:28 +0000 (18:31 +0100)]
gl renderer: Only take glyph texture alpha into account
This way, we can use the very same coloring program to draw text shadows
of fonts with colored glyphs.
Timm Bäder [Sat, 9 Dec 2017 17:26:29 +0000 (18:26 +0100)]
gl renderer: Fix shadow nodes if the child is a container
Timm Bäder [Sat, 9 Dec 2017 15:21:19 +0000 (16:21 +0100)]
gl renderer: Move declarations to the beginning of the block
Timm Bäder [Sat, 9 Dec 2017 13:32:24 +0000 (14:32 +0100)]
gl renderer: Fix use of uninitialized values
Timm Bäder [Sat, 9 Dec 2017 13:31:10 +0000 (14:31 +0100)]
gl renderer: Ensure texture sizes arent 0
We already ceil() the given float texture sizes here, so if they are
valid, the result should definitely be > 0. Textures with size 0 can't
be properly used, especially not as render targets, where they will
trigger an assertion failure later in a glCheckFramebuffer call.
Timm Bäder [Sat, 9 Dec 2017 08:41:52 +0000 (09:41 +0100)]
gl renderer: Fix inset and outset shadows in hidpi
Timm Bäder [Sat, 9 Dec 2017 08:25:47 +0000 (09:25 +0100)]
gl renderer: Fix cairo node surface size in hidpi
Timm Bäder [Sat, 9 Dec 2017 07:59:51 +0000 (08:59 +0100)]
gl renderer: Fix rounded clips in hidpi
Timm Bäder [Sat, 9 Dec 2017 07:57:13 +0000 (08:57 +0100)]
gl renderer: Handle borders in hidpi better
Timm Bäder [Fri, 8 Dec 2017 21:19:52 +0000 (22:19 +0100)]
gl renderer: Default to 0px clip and border radius
Finally fix the division by 0 in the clip code.
Timm Bäder [Fri, 8 Dec 2017 19:43:47 +0000 (20:43 +0100)]
gl renderer: Ignore render ops before we have a valid program
Timm Bäder [Fri, 8 Dec 2017 16:01:16 +0000 (17:01 +0100)]
gl renderer: Try to fix border rendering
Timm Bäder [Fri, 8 Dec 2017 12:12:43 +0000 (13:12 +0100)]
gl renderer: Use one function per node-type
So a profiler can actually tell me what's slow and not just point at
_add_render_ops in all cases.
Timm Bäder [Thu, 7 Dec 2017 16:30:02 +0000 (17:30 +0100)]
gl renderer: Don't render opacity nodes offscreen
We already drag a u_alpha uniform around in every shader, so use that
one.
Timm Bäder [Wed, 6 Dec 2017 18:22:24 +0000 (19:22 +0100)]
tests: Add border drawing test
Timm Bäder [Wed, 6 Dec 2017 16:24:58 +0000 (17:24 +0100)]
gl renderer: Fix shadow shader
We need to take the alpha of the shadow color into account as well.
Timm Bäder [Wed, 6 Dec 2017 15:45:43 +0000 (16:45 +0100)]
gl renderer: Ignore shadow color matrix nodes...
... if the color matrix nodes don't touch the child alpha.
Timm Bäder [Wed, 6 Dec 2017 15:07:18 +0000 (16:07 +0100)]
gl renderer: Add a helper function
We'll use this for the common case of a color matrix node inside a
shadow node.
Timm Bäder [Tue, 5 Dec 2017 17:05:12 +0000 (18:05 +0100)]
gl renderer: Don't zero initialize render ops GArray
Timm Bäder [Tue, 5 Dec 2017 16:49:25 +0000 (17:49 +0100)]
gl renderer: Avoid crashing tooltips
Timm Bäder [Tue, 5 Dec 2017 12:46:29 +0000 (13:46 +0100)]
gl renderer: Sort border sides by color
Timm Bäder [Tue, 5 Dec 2017 07:38:42 +0000 (08:38 +0100)]
gl renderer: Keep track of border program state
Timm Bäder [Tue, 5 Dec 2017 07:01:10 +0000 (08:01 +0100)]
gl renderer: Avoid using a new modelview for shadow nodes
We can just move the vertex data directly.
Timm Bäder [Sun, 3 Dec 2017 21:14:33 +0000 (22:14 +0100)]
gl renderer: Default to GL_LINEAR scaling filters
Timm Bäder [Sun, 3 Dec 2017 19:16:01 +0000 (20:16 +0100)]
gl renderer: Remove superfluous modelview matrix changes
Timm Bäder [Sun, 3 Dec 2017 18:47:20 +0000 (19:47 +0100)]
gl renderer: Remove unused struct member
Timm Bäder [Sun, 3 Dec 2017 18:15:33 +0000 (19:15 +0100)]
gl renderer: Keep track of color matrix op state
Timm Bäder [Sun, 3 Dec 2017 15:58:01 +0000 (16:58 +0100)]
gl renderer: Avoid consecutive opacity ops
Timm Bäder [Sun, 3 Dec 2017 15:54:34 +0000 (16:54 +0100)]
gl renderer: Define debug structs inline
Timm Bäder [Sun, 3 Dec 2017 08:04:07 +0000 (09:04 +0100)]
gl renderer: Add more detailed render op output
Timm Bäder [Sat, 2 Dec 2017 10:17:46 +0000 (11:17 +0100)]
gl renderer: Only draw blurred shadow nodes once
Timm Bäder [Sat, 2 Dec 2017 10:02:31 +0000 (11:02 +0100)]
gl renderer: Remove consecutive clip ops
Timm Bäder [Fri, 1 Dec 2017 12:56:56 +0000 (13:56 +0100)]
gl renderer: Rename a macro
Timm Bäder [Fri, 1 Dec 2017 11:29:27 +0000 (12:29 +0100)]
gl renderer: Fix debugging output
Timm Bäder [Fri, 1 Dec 2017 10:55:10 +0000 (11:55 +0100)]
gl renderer: Implement simple border nodes
Timm Bäder [Fri, 1 Dec 2017 10:02:26 +0000 (11:02 +0100)]
gl renderer: Don't render unblurred text shadows to a texture
We can do the same thing by simply drawing the text in the given shadow
color.
Timm Bäder [Fri, 1 Dec 2017 09:47:13 +0000 (10:47 +0100)]
gl renderer: Split out text rendering function
We'll use that for text shadow nodes
Timm Bäder [Fri, 1 Dec 2017 09:27:31 +0000 (10:27 +0100)]
gl renderer: Implement simple shadow nodes
Timm Bäder [Fri, 1 Dec 2017 08:58:58 +0000 (09:58 +0100)]
gl renderer: Split out a utility function
Timm Bäder [Fri, 1 Dec 2017 07:32:00 +0000 (08:32 +0100)]
gl renderer: Fix inset shadow offset calculation
Timm Bäder [Fri, 1 Dec 2017 07:30:11 +0000 (08:30 +0100)]
gl renderer: Implement unblurred outset shadows
Timm Bäder [Thu, 30 Nov 2017 17:47:55 +0000 (18:47 +0100)]
gl renderer: Rework program creation
Make sure all uniform names have to match between the shader names and
the _location integers we save in every Program struct.
Timm Bäder [Thu, 30 Nov 2017 15:48:03 +0000 (16:48 +0100)]
gl renderer: Implement unblurred inset shadows
Timm Bäder [Sat, 25 Nov 2017 07:56:50 +0000 (08:56 +0100)]
gl renderer: Implement blur nodes
Timm Bäder [Sat, 25 Nov 2017 06:51:00 +0000 (07:51 +0100)]
gl renderer: Remove some unused members
Timm Bäder [Fri, 24 Nov 2017 12:18:45 +0000 (13:18 +0100)]
gl renderer: Keep track of current program color value
Timm Bäder [Fri, 24 Nov 2017 09:43:17 +0000 (10:43 +0100)]
gl renderer: Don't draw texture nodes to a framebuffer
We don't need to create a texture from a texture node. We can simply use
its texture instead and draw it however we want.
Timm Bäder [Fri, 24 Nov 2017 09:32:08 +0000 (10:32 +0100)]
gl renderer: Implement color matrix nodes again
Timm Bäder [Fri, 24 Nov 2017 09:24:49 +0000 (10:24 +0100)]
gl render ops: Rename a member
Timm Bäder [Fri, 24 Nov 2017 09:18:51 +0000 (10:18 +0100)]
gl renderer: Factor out a helper function for offscreen drawing
Timm Bäder [Thu, 23 Nov 2017 19:01:15 +0000 (20:01 +0100)]
gl ops: Remove dead code
This is already checked further up in that function
Timm Bäder [Thu, 23 Nov 2017 18:49:41 +0000 (19:49 +0100)]
gl renderer: Optimize text drawing
Text nodes will almost always end up using the exact same texture and
the same program. So, in that case we can simply add vertex data for all
the characters we need to draw and use just one draw call.
Timm Bäder [Thu, 23 Nov 2017 10:30:05 +0000 (11:30 +0100)]
gl renderer: Remove unused VAO
Timm Bäder [Thu, 23 Nov 2017 09:28:30 +0000 (10:28 +0100)]
gl renderer: Stop collecting VAOs in clear_tree
We don't use that part of the gl driver anymore.
Timm Bäder [Thu, 23 Nov 2017 09:10:43 +0000 (10:10 +0100)]
gl renderer: Only check for color glyphs once per text node
It does not depend on the glyph, so no need to do it once for every
glyph.
Timm Bäder [Thu, 23 Nov 2017 09:02:58 +0000 (10:02 +0100)]
gl renderer: Implement cairo nodes again
Timm Bäder [Wed, 22 Nov 2017 20:02:50 +0000 (21:02 +0100)]
gl renderer: Move render ops into separate file
Timm Bäder [Wed, 22 Nov 2017 19:13:46 +0000 (20:13 +0100)]
gsk: Move all gskgl* files into gl/
Timm Bäder [Wed, 22 Nov 2017 10:32:23 +0000 (11:32 +0100)]
gl renderer: Rework once more
Last time, I swear.
Timm Bäder [Mon, 20 Nov 2017 14:08:04 +0000 (15:08 +0100)]
gl renderer: Don't initialize modelview matrix twice
Timm Bäder [Mon, 20 Nov 2017 13:30:46 +0000 (14:30 +0100)]
gl renderer: Group render node types by render item creation
Timm Bäder [Sun, 19 Nov 2017 13:39:56 +0000 (14:39 +0100)]
gl renderer: Don't pass MVP to shaders
We already pass both modelview and projection matrix individually.
Timm Bäder [Sat, 18 Nov 2017 13:30:57 +0000 (14:30 +0100)]
gl: Add glyph cache
Based on the one used by the vulkan renderer
Timm Bäder [Fri, 17 Nov 2017 16:23:27 +0000 (17:23 +0100)]
gl renderer: Remove unused member
Timm Bäder [Thu, 16 Nov 2017 20:22:02 +0000 (21:22 +0100)]
gl renderer: Remove unused shaders
Timm Bäder [Thu, 16 Nov 2017 20:10:31 +0000 (21:10 +0100)]
test-render-nodes: Add transformed clip nodes test
Timm Bäder [Thu, 16 Nov 2017 20:10:09 +0000 (21:10 +0100)]
showrendernode: Resize window to a reasonable size instead
Timm Bäder [Thu, 16 Nov 2017 20:04:18 +0000 (21:04 +0100)]
gl renderer: Save clip in every node
Timm Bäder [Thu, 16 Nov 2017 11:20:35 +0000 (12:20 +0100)]
gl renderer: Don't create framebuffer for texture opacity children
Slowly a pattern emerges...
Timm Bäder [Thu, 16 Nov 2017 10:41:16 +0000 (11:41 +0100)]
gl renderer: Implement rounded clip nodes
mostly a proof of concept
Timm Bäder [Thu, 16 Nov 2017 08:47:19 +0000 (09:47 +0100)]
gl renderer: save on some frame buffers
If the child of a color matrix node is a texture, we can directly use
that instead of drawing it to a texture first and then using that
texture.
Timm Bäder [Thu, 16 Nov 2017 08:33:20 +0000 (09:33 +0100)]
GskGLDriver: Add profiler
Count the newly created textures, the reused ones and the uploads from
cairo surfaces per frame.
Timm Bäder [Wed, 15 Nov 2017 17:40:57 +0000 (18:40 +0100)]
GskGLDriver: Use float for texture size in create_texture
Render nodes can end up with bounds < 1 since they are floats, and the
implicit cast to int ends up creating a texture with 0 width or height.
Use ceil() instead in create_texture so we don't have to do that on the
caller side everywhere.
Timm Bäder [Sat, 11 Nov 2017 11:36:39 +0000 (12:36 +0100)]
test-render-nodes: Add color matrix test
Timm Bäder [Sat, 11 Nov 2017 08:58:09 +0000 (09:58 +0100)]
test-render-nodes: Print a warning if we didn't generate anything
Timm Bäder [Thu, 9 Nov 2017 08:51:57 +0000 (09:51 +0100)]
build: Remove unused variable
Timm Bäder [Sat, 11 Nov 2017 05:41:41 +0000 (06:41 +0100)]
add tests/showrendernode
A .node file viewer.
Timm Bäder [Fri, 3 Nov 2017 12:09:02 +0000 (13:09 +0100)]
Rework the GL renderer
Timm Bäder [Fri, 3 Nov 2017 12:03:44 +0000 (13:03 +0100)]
gl renderer: Remove some unused code
Timm Bäder [Thu, 9 Nov 2017 09:55:14 +0000 (10:55 +0100)]
gl driver: Make some members const
Timm Bäder [Sat, 4 Nov 2017 19:05:56 +0000 (20:05 +0100)]
GskRenderer: Remove viewport property
Timm Bäder [Wed, 13 Dec 2017 08:05:49 +0000 (09:05 +0100)]
snapshot: Add & use API for linear gradient nodes
This way, we can also clip the created node bounds to the current clip
of the GtkSnapshot. This works as long as we don't modify the start and
end points, and happens all the time while rendering.
Timm Bäder [Tue, 12 Dec 2017 19:33:53 +0000 (20:33 +0100)]
snapshot: Directly clip color nodes
Clipping a color node is trivial so we do it here directly since that
might later save the entire clip node as well as freeing the fragment
shaders from coloring lots of pixels that will be clipped away.
Timm Bäder [Tue, 12 Dec 2017 19:23:46 +0000 (20:23 +0100)]
snapshot: Fix typo
Timm Bäder [Tue, 19 Dec 2017 10:53:31 +0000 (11:53 +0100)]
x11: Fix wrong condition when unsetting transient-for
Setting a new transient-for parent is only possible if the given parent
window is valid, not when it is NULL or valid.
Matthias Clasen [Thu, 21 Dec 2017 16:37:53 +0000 (11:37 -0500)]
Remove font-name leftovers
There were still a few places where the font-name
property was used internally.
Matthias Clasen [Thu, 21 Dec 2017 17:18:10 +0000 (12:18 -0500)]
Add a missing include
Matthias Clasen [Thu, 21 Dec 2017 16:10:44 +0000 (11:10 -0500)]
font button: Drop the font-name property
We already have the GtkFontChooser::font property
which serves the same purpose, so get rid of the
duplication.
Matthias Clasen [Thu, 21 Dec 2017 16:10:13 +0000 (11:10 -0500)]
tests: Stop using gtk_font_button_get_font_name
It is going away.
Matthias Clasen [Thu, 21 Dec 2017 13:04:26 +0000 (08:04 -0500)]
Remove debug spew
Matthias Clasen [Wed, 20 Dec 2017 15:36:25 +0000 (10:36 -0500)]
Fix a mis-merge
Matthias Clasen [Wed, 20 Dec 2017 15:29:33 +0000 (10:29 -0500)]
Implement font-feature-settings
This is a missing part of the CSS font level 3 module.
Matthias Clasen [Wed, 20 Dec 2017 13:31:22 +0000 (08:31 -0500)]
Update the docs for GtkCssChange
The docs were out of sync with the flags we actually have.
Carlos Garnacho [Tue, 19 Dec 2017 21:58:51 +0000 (22:58 +0100)]
gdk: Remove leftover variable
This is unused and leaked.